Hướng dẫn binary number javascript - số nhị phân javascript

Tôi biết rằng

var foo = parseInt('1111', 2);    // foo will be set to 15
2 là tiền tố cho các số thập lục phân trong JavaScript. Ví dụ,
var foo = parseInt('1111', 2);    // foo will be set to 15
3 là viết tắt của số 255.

Có một cái gì đó tương tự cho các số nhị phân? Tôi mong đợi

var foo = parseInt('1111', 2);    // foo will be set to 15
4 sẽ đại diện cho số
var foo = parseInt('1111', 2);    // foo will be set to 15
5, nhưng điều này không hiệu quả với tôi.

Khi được hỏi ngày 10 tháng 5 năm 2010 lúc 13:59May 10, 2010 at 13:59May 10, 2010 at 13:59

Hướng dẫn binary number javascript - số nhị phân javascript

Misha Moroshkomisha MoroshkoMisha MoroshkoMisha Moroshko

160K220 Huy hiệu vàng493 Huy hiệu bạc729 Huy hiệu Đồng220 gold badges493 silver badges729 bronze badges220 gold badges493 silver badges729 bronze badges

6

Update:

Các phiên bản mới hơn của JavaScript - cụ thể là ECMAScript 6 - đã thêm hỗ trợ cho nhị phân (tiền tố

var foo = parseInt('1111', 2);    // foo will be set to 15
6), octal (tiền tố
var foo = parseInt('1111', 2);    // foo will be set to 15
7) và hexadecimal (tiền tố:
var foo = parseInt('1111', 2);    // foo will be set to 15
2) chữ số:
var bin = 0b1111;    // bin will be set to 15
var oct = 0o17;      // oct will be set to 15
var oxx = 017;       // oxx will be set to 15
var hex = 0xF;       // hex will be set to 15
// note: bB oO xX are all valid

Tính năng này đã có sẵn trong Firefox và Chrome. Hiện tại nó không được hỗ trợ trong IE, nhưng rõ ràng sẽ là khi Spartan đến.

(Cảm ơn bình luận của Semicolon và câu trả lời của Urish đã chỉ ra điều này.)

Câu trả lời ban đầu:

Không, không có tương đương với số nhị phân. JavaScript chỉ hỗ trợ các chữ số theo số thập phân (không có tiền tố), định dạng lục giác (tiền tố

var foo = parseInt('1111', 2);    // foo will be set to 15
2) và octal (tiền tố
Object.defineProperty(
    Number.prototype, 'b', {
        set:function(){
            return false;
        },

        get:function(){
            return parseInt(this, 2);
        }
    }
);


100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3

// and so on
0).

Một giải pháp thay thế có thể là chuyển chuỗi nhị phân cho phương thức

Object.defineProperty(
    Number.prototype, 'b', {
        set:function(){
            return false;
        },

        get:function(){
            return parseInt(this, 2);
        }
    }
);


100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3

// and so on
1 cùng với radix:
var foo = parseInt('1111', 2);    // foo will be set to 15

QWERTY

25.9K21 Huy hiệu vàng103 Huy hiệu bạc125 Huy hiệu Đồng21 gold badges103 silver badges125 bronze badges21 gold badges103 silver badges125 bronze badges

Đã trả lời ngày 10 tháng 5 năm 2010 lúc 14:04May 10, 2010 at 14:04May 10, 2010 at 14:04

14

Trong Ecmascript 6, điều này sẽ được hỗ trợ như một phần của ngôn ngữ, tức là

Object.defineProperty(
    Number.prototype, 'b', {
        set:function(){
            return false;
        },

        get:function(){
            return parseInt(this, 2);
        }
    }
);


100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3

// and so on
2 là đúng. Bạn cũng có thể sử dụng chữ B (ví dụ:
Object.defineProperty(
    Number.prototype, 'b', {
        set:function(){
            return false;
        },

        get:function(){
            return parseInt(this, 2);
        }
    }
);


100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3

// and so on
3).

Tìm kiếm

Object.defineProperty(
    Number.prototype, 'b', {
        set:function(){
            return false;
        },

        get:function(){
            return parseInt(this, 2);
        }
    }
);


100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3

// and so on
4 trong thông số kỹ thuật ES6.

Olga

1.6181 Huy hiệu vàng22 Huy hiệu bạc31 Huy hiệu đồng1 gold badge22 silver badges31 bronze badges1 gold badge22 silver badges31 bronze badges

Đã trả lời ngày 1 tháng 9 năm 2014 lúc 22:20Sep 1, 2014 at 22:20Sep 1, 2014 at 22:20

Urishurishurishurish

8.8108 Huy hiệu vàng52 Huy hiệu bạc74 Huy hiệu đồng8 gold badges52 silver badges74 bronze badges8 gold badges52 silver badges74 bronze badges

0

Tôi biết rằng mọi người nói rằng việc mở rộng các nguyên mẫu không phải là một ý tưởng tốt, nhưng là kịch bản của bạn ...

Tôi làm theo cách này:

Object.defineProperty(
    Number.prototype, 'b', {
        set:function(){
            return false;
        },

        get:function(){
            return parseInt(this, 2);
        }
    }
);


100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3

// and so on

Ruffin

15.4K8 Huy hiệu vàng82 Huy hiệu bạc129 Huy hiệu đồng8 gold badges82 silver badges129 bronze badges8 gold badges82 silver badges129 bronze badges

Đã trả lời ngày 26 tháng 9 năm 2012 lúc 7:27Sep 26, 2012 at 7:27Sep 26, 2012 at 7:27

Juan Garciajuan GarciaJuan GarciaJuan Garcia

2593 Huy hiệu bạc3 Huy hiệu Đồng3 silver badges3 bronze badges3 silver badges3 bronze badges

1

Nếu mối quan tâm chính của bạn là hiển thị thay vì mã hóa, có một hệ thống chuyển đổi tích hợp mà bạn có thể sử dụng:

var foo = parseInt('1111', 2);    // foo will be set to 15
6

Tham khảo: MDN trên

Object.defineProperty(
    Number.prototype, 'b', {
        set:function(){
            return false;
        },

        get:function(){
            return parseInt(this, 2);
        }
    }
);


100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3

// and so on
5

Ruffin

15.4K8 Huy hiệu vàng82 Huy hiệu bạc129 Huy hiệu đồng8 gold badges82 silver badges129 bronze badges8 gold badges82 silver badges129 bronze badges

Đã trả lời ngày 26 tháng 9 năm 2012 lúc 7:27Sep 26, 2012 at 7:27May 10, 2010 at 14:18

Juan Garciajuan GarciaJuan GarciaPops

2593 Huy hiệu bạc3 Huy hiệu Đồng3 silver badges3 bronze badges36 gold badges133 silver badges151 bronze badges

Nếu mối quan tâm chính của bạn là hiển thị thay vì mã hóa, có một hệ thống chuyển đổi tích hợp mà bạn có thể sử dụng:

Tham khảo: MDN trên

Object.defineProperty(
    Number.prototype, 'b', {
        set:function(){
            return false;
        },

        get:function(){
            return parseInt(this, 2);
        }
    }
);


100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3

// and so on
5
var foo = parseInt('1111', 2);    // foo will be set to 15
9

Đã trả lời ngày 26 tháng 9 năm 2012 lúc 7:27May 10, 2010 at 14:18

var foo = parseInt('1111', 2);    // foo will be set to 15
0

Juan Garciajuan GarciaPops

2593 Huy hiệu bạc3 Huy hiệu Đồng36 gold badges133 silver badges151 bronze badges

var foo = parseInt('1111', 2);    // foo will be set to 15
1

Đã trả lời ngày 10 tháng 5 năm 2010 lúc 14:18Sep 12, 2012 at 21:52

Popspops

Object.defineProperty(
    Number.prototype, 'b', {
        set:function(){
            return false;
        },

        get:function(){
            return parseInt(this, 2);
        }
    }
);


100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3

// and so on
6frodeborlifrodeborli

29.6K36 Huy hiệu vàng133 Huy hiệu bạc151 Huy hiệu Đồng

Theo như tôi biết, không thể sử dụng một trình xê sóng nhị phân trong JavaScript. Tôi có ba giải pháp cho bạn, tất cả đều có vấn đề của họ. Tôi nghĩ thay thế 3 là "đẹp nhất" cho khả năng đọc, và nó có thể nhanh hơn nhiều so với phần còn lại - ngoại trừ chi phí thời gian chạy ban đầu. Vấn đề là nó chỉ hỗ trợ các giá trị lên tới 255.Sep 12, 2012 at 21:521 gold badge20 silver badges30 bronze badges

0

Thay thế 1:

Object.defineProperty(
    Number.prototype, 'b', {
        set:function(){
            return false;
        },

        get:function(){
            return parseInt(this, 2);
        }
    }
);


100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3

// and so on
8
var foo = parseInt('1111', 2);    // foo will be set to 15
5

Thay thế 2:

Object.defineProperty(
    Number.prototype, 'b', {
        set:function(){
            return false;
        },

        get:function(){
            return parseInt(this, 2);
        }
    }
);


100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3

// and so on
71 gold badge20 silver badges30 bronze badgesDec 9, 2011 at 12:25

Thay thế 3: Sergey Metlov

Phiên bản này cho phép bạn nhập 8 chữ số nhị phân 27 gold badges91 silver badges150 bronze badges

1

Object.defineProperty(
    Number.prototype, 'b', {
        set:function(){
            return false;
        },

        get:function(){
            return parseInt(this, 2);
        }
    }
);


100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3

// and so on
9, 4 chữ số
var foo = parseInt('1111', 2);    // foo will be set to 15
60 và các chữ số biến
var foo = parseInt('1111', 2);    // foo will be set to 15
61. Đó là
var foo = parseInt('1111', 2);    // foo will be set to 15
62 là bất hợp pháp, bạn phải sử dụng
var foo = parseInt('1111', 2);    // foo will be set to 15
63 hoặc
var foo = parseInt('1111', 2);    // foo will be set to 15
64.Dec 9, 2011 at 12:25

var foo = parseInt('1111', 2);    // foo will be set to 15
2

Đã trả lời ngày 12 tháng 9 năm 2012 lúc 21:52Sergey Metlov

var foo = parseInt('1111', 2);    // foo will be set to 15
3

frodeborlifrodeborli27 gold badges91 silver badges150 bronze badgesOct 14, 2014 at 13:11

0

1.4611 Huy hiệu vàng20 Huy hiệu bạc 30 Huy hiệu Đồng

Có thể điều này sẽ hữu ích:

Đã trả lời ngày 9 tháng 12 năm 2011 lúc 12:25Oct 14, 2014 at 13:11

Sergey Metlovsergey Metlov

25K27 Huy hiệu vàng91 Huy hiệu bạc150 Huy hiệu Đồng
10001000000010010 or 1001000000010010

Không, nhưng bạn có thể sử dụng ParseInt và tùy chọn bỏ qua các trích dẫn.
0x11012 or 0x9012

Từ việc tạo ra Q, dường như bạn chỉ nói về việc sử dụng văn bản nhị phân trong mã của bạn và không xử lý các biểu diễn nhị phân của các giá trị số (mà parstint là con đường để đi).May 26, 2015 at 12:15May 26, 2015 at 12:15

Tôi nghi ngờ rằng có nhiều lập trình viên cần xử lý các số nhị phân không quen thuộc với ánh xạ từ 0-F đến 0000-1111. Vì vậy, về cơ bản làm cho các nhóm bốn người và sử dụng ký hiệu hex.epelegepeleg

Vì vậy, thay vì viết 101000000010, bạn sẽ sử dụng 0xA02 có cùng ý nghĩa và dễ đọc hơn nhiều và ít có khả năng gặp lỗi.17 gold badges101 silver badges150 bronze badges17 gold badges101 silver badges150 bronze badges

Chỉ cần xem xét khả năng đọc, hãy thử so sánh những gì lớn hơn: 10001000000010010 hoặc 1001000000010010

var foo = parseInt('1111', 2);    // foo will be set to 15
0

Và điều gì sẽ xảy ra nếu tôi viết chúng như thế này: 0x11012 hoặc 0x9012Jan 4, 2013 at 11:04Jan 4, 2013 at 11:04

Đã trả lời ngày 26 tháng 5 năm 2015 lúc 12:15jpillorajpillora

Epelegepeleg2 gold badges44 silver badges55 bronze badges2 gold badges44 silver badges55 bronze badges

10K17 Huy hiệu vàng101 Huy hiệu bạc150 Huy hiệu đồng

var foo = parseInt('1111', 2);    // foo will be set to 15
1

Chuyển đổi chuỗi nhị phân thành số và visa-versa.Nov 22, 2021 at 16:55Nov 22, 2021 at 16:55

Đã trả lời ngày 4 tháng 1 năm 2013 lúc 11:04RazerJsRazerJs

Jpillorajpillora1 silver badge11 bronze badges1 silver badge11 bronze badges

Nhị phân trong JavaScript là gì?

JavaScript sử dụng 32 bit BitWise Toán tử JavaScript Các số lưu trữ là 64 bit số điểm nổi, nhưng tất cả các hoạt động bitwise được thực hiện trên 32 bit số nhị phân. Trước khi hoạt động bitwise được thực hiện, JavaScript đã chuyển đổi số thành 32 bit số nguyên đã ký.32 bits binary numbers. Before a bitwise operation is performed, JavaScript converts numbers to 32 bits signed integers.32 bits binary numbers. Before a bitwise operation is performed, JavaScript converts numbers to 32 bits signed integers.

Làm thế nào để bạn viết số nhị phân trong JavaScript?

Ví dụ 2: Chuyển đổi thập phân sang nhị phân bằng cách sử dụng phương thức parseInt () được sử dụng để chuyển đổi giá trị chuỗi thành số nguyên.Phương thức tích hợp JavaScript ToString ([Radix]) trả về giá trị chuỗi trong một radix được chỉ định (cơ sở).Ở đây, toString (2) chuyển đổi số thập phân thành số nhị phân.toString(2) converts the decimal number to binary number.toString(2) converts the decimal number to binary number.

11111111 có nghĩa là gì trong nhị phân?

255 trong nhị phân là 11111111. Không giống như hệ thống số thập phân nơi chúng ta sử dụng các chữ số 0 đến 9 để biểu diễn một số, trong một hệ thống nhị phân, chúng ta chỉ sử dụng 2 chữ số là 0 và 1 (bit).Chúng tôi đã sử dụng 8 bit để đại diện cho 255 trong nhị phân. in binary is 11111111. Unlike the decimal number system where we use the digits 0 to 9 to represent a number, in a binary system, we use only 2 digits that are 0 and 1 (bits). We have used 8 bits to represent 255 in binary. in binary is 11111111. Unlike the decimal number system where we use the digits 0 to 9 to represent a number, in a binary system, we use only 2 digits that are 0 and 1 (bits). We have used 8 bits to represent 255 in binary.

Làm thế nào để bạn viết một số trong nhị phân?

Một số nguyên thập phân có thể được chuyển đổi thành nhị phân bằng cách chia nó cho 2. Lấy chỉ số và tiếp tục chia nó cho 2, cho đến khi bạn đạt đến 0.Mỗi lần bạn thực hiện bộ phận này, hãy lưu ý phần còn lại.Bây giờ đảo ngược danh sách phần còn lại và bạn nhận được số ở dạng nhị phân.dividing it by 2. Take the quotient, and keep dividing it by 2, until you reach zero. Each time you perform this division, take note of the remainder. Now reverse the remainders list, and you get the number in binary form.dividing it by 2. Take the quotient, and keep dividing it by 2, until you reach zero. Each time you perform this division, take note of the remainder. Now reverse the remainders list, and you get the number in binary form.