Hướng dẫn javascript decimal to binary with leading zeros - javascript thập phân thành nhị phân với các số 0 ở đầu

13

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đã sử dụng .ToString (2) để chuyển đổi số nguyên thành nhị phân, nhưng nó chỉ trả về nhị phân miễn là nó cần (tức là bit đầu tiên là 1).

Vậy ở đâu:

num = 2;
num.toString(2) // yields 10. 

Làm cách nào để mang lại octet 00000010?

Hỏi ngày 24 tháng 12 năm 2014 lúc 20:18Dec 24, 2014 at 20:18

Hướng dẫn javascript decimal to binary with leading zeros - javascript thập phân thành nhị phân với các số 0 ở đầu

2

Nó đơn giản như

var n = num.toString(2);
n = "00000000".substr(n.length) + n;

Đã trả lời ngày 24 tháng 12 năm 2014 lúc 20:20Dec 24, 2014 at 20:20

Hướng dẫn javascript decimal to binary with leading zeros - javascript thập phân thành nhị phân với các số 0 ở đầu

Joe Thomasjoe ThomasJoe Thomas

5.2876 Huy hiệu vàng23 Huy hiệu bạc34 Huy hiệu đồng6 gold badges23 silver badges34 bronze badges

2

Bạn chỉ có thể sử dụng một vòng lặp trong thời gian để thêm số 0 ở mặt trước của kết quả cho đến khi nó có độ dài chính xác.

var num = 2,
    binaryStr = num.toString(2);

while(binaryStr.length < 8) {
    binaryStr = "0" + binaryStr;
}

Hướng dẫn javascript decimal to binary with leading zeros - javascript thập phân thành nhị phân với các số 0 ở đầu

Đã trả lời ngày 24 tháng 12 năm 2014 lúc 20:23Dec 24, 2014 at 20:23

Forgivensonforgivensonforgivenson

4.3432 Huy hiệu vàng18 Huy hiệu bạc28 Huy hiệu đồng2 gold badges18 silver badges28 bronze badges

1

Hãy thử một cái gì đó như thế này ...

function pad(n, width, z) {
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}

... sau đó sử dụng nó như ...

pad(num.toString(2), 8);

Đã trả lời ngày 24 tháng 12 năm 2014 lúc 20:20Dec 24, 2014 at 20:20

Hướng dẫn javascript decimal to binary with leading zeros - javascript thập phân thành nhị phân với các số 0 ở đầu

Joe Thomasjoe Thomasrfornal

5.2876 Huy hiệu vàng23 Huy hiệu bạc34 Huy hiệu đồng5 gold badges30 silver badges42 bronze badges

1

Hàm

var n = num.toString(2);
n = "00000000".substr(n.length) + n;
1 trả về số lượng bit không hàng đầu trong biểu diễn nhị phân 32 bit của một số.
var n = num.toString(2);
n = "00000000".substr(n.length) + n;
1
function returns the number of leading zero bits in the 32-bit binary representation of a number.

Thử nó

Cú pháp

Thông số

Giá trị trả về

Số lượng bit không hàng đầu trong biểu diễn nhị phân 32 bit của

var n = num.toString(2);
n = "00000000".substr(n.length) + n;
2.

Sự mô tả

var n = num.toString(2);
n = "00000000".substr(n.length) + n;
3 là viết tắt của Countleadingzeros32.CountLeadingZeros32.

Nếu

var n = num.toString(2);
n = "00000000".substr(n.length) + n;
2 không phải là một số, nó sẽ được chuyển đổi thành một số trước, sau đó được chuyển đổi thành số nguyên không dấu 32 bit.

Nếu số nguyên không dấu 32 bit được chuyển đổi là

var n = num.toString(2);
n = "00000000".substr(n.length) + n;
5,
var n = num.toString(2);
n = "00000000".substr(n.length) + n;
6 được trả về, vì tất cả các bit là
var n = num.toString(2);
n = "00000000".substr(n.length) + n;
5. Nếu bit quan trọng nhất là
var n = num.toString(2);
n = "00000000".substr(n.length) + n;
8 (nghĩa là số lớn hơn hoặc bằng 231),
var n = num.toString(2);
n = "00000000".substr(n.length) + n;
5 được trả về.

Hàm này đặc biệt hữu ích cho các hệ thống biên dịch với JS, như EMScripten.

Ví dụ

Sử dụng math.clz32 ()

Math.clz32(1);           // 31
Math.clz32(1000);        // 22
Math.clz32();            // 32

const stuff = [NaN, Infinity, -Infinity, 0, -0, false, null, undefined, 'foo', {}, []];
stuff.every((n) => Math.clz32(n) === 32);  // true

Math.clz32(true);        // 31
Math.clz32(3.5);         // 30

Thực hiện số lượng hàng đầu và hơn thế nữa

Hiện tại, không có

var num = 2,
    binaryStr = num.toString(2);

while(binaryStr.length < 8) {
    binaryStr = "0" + binaryStr;
}
0 cho "những người dẫn đầu" (được đặt tên là "Clon", không phải "CLO", vì "CLO" và "CLZ" quá giống nhau, đặc biệt là đối với những người không nói tiếng Anh). Tuy nhiên, hàm
var num = 2,
    binaryStr = num.toString(2);

while(binaryStr.length < 8) {
    binaryStr = "0" + binaryStr;
}
1 có thể dễ dàng được tạo bằng cách đảo ngược các bit của một số và chuyển kết quả thành
var num = 2,
    binaryStr = num.toString(2);

while(binaryStr.length < 8) {
    binaryStr = "0" + binaryStr;
}
2. Làm điều này sẽ hoạt động vì nghịch đảo của 1 là 0 và ngược lại. Do đó, đảo ngược các bit sẽ nghịch đảo số lượng 0 của 0 (từ
var num = 2,
    binaryStr = num.toString(2);

while(binaryStr.length < 8) {
    binaryStr = "0" + binaryStr;
}
2), do đó tạo ra
var num = 2,
    binaryStr = num.toString(2);

while(binaryStr.length < 8) {
    binaryStr = "0" + binaryStr;
}
2 đếm số lượng thay vì đếm số số 0.

Hãy xem xét từ 32 bit sau:

const a = 32776;   // 00000000000000001000000000001000 (16 leading zeros)
Math.clz32(a);   // 16

const b = ~32776;  // 11111111111111110111111111110111 (32776 inverted, 0 leading zeros)
Math.clz32(b);   // 0 (this is equal to how many leading one's there are in a)

Sử dụng logic này, hàm

var num = 2,
    binaryStr = num.toString(2);

while(binaryStr.length < 8) {
    binaryStr = "0" + binaryStr;
}
1 có thể được tạo như sau:

const clz = Math.clz32;

function clon(integer) {
  return clz(~integer);
}

Hơn nữa, kỹ thuật này có thể được mở rộng để tạo ra một chức năng "đếm số không có dấu", như được thấy dưới đây. Hàm

var num = 2,
    binaryStr = num.toString(2);

while(binaryStr.length < 8) {
    binaryStr = "0" + binaryStr;
}
6 có một chút và số nguyên với phần bổ sung của hai người. Bằng cách thức bổ sung của Two hoạt động, tất cả các số không kéo dài sẽ được chuyển đổi thành các số không, và sau đó khi thêm 1, nó sẽ được chuyển đến cho đến khi
var n = num.toString(2);
n = "00000000".substr(n.length) + n;
5 đầu tiên (ban đầu được đạt được. Tất cả các bit cao hơn so với cái này giữ nguyên và là nghịch đảo của các bit số nguyên ban đầu. Do đó, khi thực hiện bitwise và với số nguyên ban đầu, tất cả các bit cao hơn đều trở thành
var n = num.toString(2);
n = "00000000".substr(n.length) + n;
5, có thể được tính bằng
function pad(n, width, z) {
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}
0. Số lượng số không kéo dài, cộng với bit
var n = num.toString(2);
n = "00000000".substr(n.length) + n;
8 đầu tiên, cộng với các bit hàng đầu được tính bởi
function pad(n, width, z) {
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}
0, tổng cộng 32.

function ctrz(integer) {
  integer >>>= 0; // coerce to Uint32
  if (integer === 0) {
    // skipping this step would make it return -1
    return 32;
  }
  integer &= -integer; // equivalent to `int = int & (~int + 1)`
  return 31 - clz(integer);
}

Sau đó, chúng ta có thể xác định chức năng "đếm theo dõi" như SO:

function ctron(integer) {
  return ctrz(~integer);
}

Các chức năng trợ giúp này có thể được thực hiện thành một mô -đun ASM.JS để cải thiện hiệu suất tiềm năng.

var n = num.toString(2);
n = "00000000".substr(n.length) + n;
0

Thông số kỹ thuật

Sự chỉ rõ
Thông số kỹ thuật ngôn ngữ Ecmascript # Sec-Math.ClZ32
# sec-math.clz32

Tính tương thích của trình duyệt web

Bảng BCD chỉ tải trong trình duyệt

Xem thêm

Làm thế nào để chuyển đổi một thập phân thành 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.Using toString() The parseInt() method is used to convert a string value to an integer. The JavaScript built-in method toString([radix]) returns a string value in a specified radix (base). Here, toString(2) converts the decimal number to binary number.

Làm thế nào tôi có thể đệm một giá trị với các số không hàng đầu?

Để đệm một số nguyên với các số 0 dẫn đến một độ dài cụ thể để hiển thị số nguyên dưới dạng giá trị thập phân, hãy gọi phương thức TOSTRING (Chuỗi) của nó và chuyển chuỗi "DN" làm giá trị của tham số định dạng, trong đó n đại diện cho độ dài tối thiểu củachuỗi.call its ToString(String) method, and pass the string "Dn" as the value of the format parameter, where n represents the minimum length of the string.

Làm cách nào để chuyển đổi thập phân thành nhị phân?

Cách đơn giản nhất để chuyển đổi số thập phân thành số nhị phân là chia số đã cho nhiều lần cho đến khi chúng ta nhận được 0 làm thương số.Sau đó, chúng tôi viết phần còn lại theo thứ tự ngược lại để có được giá trị nhị phân của số thập phân đã cho.dividing the given number repeatedly by 2 until we get 0 as the quotient. Then, we write the remainders in the reverse order to get the binary value of the given decimal number.

Làm thế nào để chuyển đổi một số nguyên thành nhị phân trong JS?

Để chuyển đổi một số nguyên thành nhị phân trong javascript, chia số nguyên cho 2 và lưu trữ phần còn lại.divide the integer by 2 and store the remainder.