# Các số nguyên trong SystemC

SystemC cung cấp các phiên bản bù hai của hai kiểu số nguyên cơ bản, bao gồm cả số nguyên có dấu và không dấu. Hai kiểu số nguyên này là kiểu số nguyên có độ chính xác giới hạn, với độ dài tối đa là 64-bit, và kiểu số nguyên có độ chính xác hữu hạn, có thể dài hơn nhiều. Các kiểu số nguyên này cung cấp các chức năng không có sẵn trong các kiểu số nguyên gốc của C++. Các kiểu dữ liệu gốc của C++ có độ rộng phụ thuộc vào bộ xử lý và trình biên dịch của máy chủ. Các kiểu dữ liệu gốc được tối ưu hóa cho tập lệnh của bộ xử lý máy chủ và rất hiệu quả. Các kiểu dữ liệu này thường có độ dài 8, 16, 32 hoặc 64 bit. Các kiểu số nguyên trong SystemC được định dạng và có thể có độ rộng dữ liệu từ 1 đến hàng trăm bit. Ngoài độ rộng có thể cấu hình, các kiểu số nguyên trong SystemC còn cho phép lựa chọn bit, lựa chọn phạm vi bit và các thao tác nối chuỗi.

vd: Bus dữ liệu của SoC lên đến 512bit vậy làm thế nào để bạn dùng C++ thuần để miêu tả kiểu dữ liệu 512bit -> 64byte. SC cung cấp các class đễ thực hiện điều này.

# 1. sc_int and sc_uint

Hầu hết các phần cứng cần xác định độ rộng lưu trữ thực tế ở một mức độ tinh chỉnh nào đó. Khi xử lý số học, các kiểu dữ liệu số tích hợp sẵn sc_int và sc_uint (không dấu) cung cấp một cách hiệu quả để mô hình hóa dữ liệu với các độ rộng cụ thể từ 1 đến 64 bit.

| sc_int value_name; | sc_uint value_name;

# 2. sc_bigint and sc_biguint

Một số phần cứng có thể lớn hơn các số được hỗ trợ bởi các kiểu dữ liệu gốc của C++. SystemC cung cấp các kiểu dữ liệu sc_bigint và sc_biguint cho mục đích này. Các kiểu dữ liệu này hỗ trợ các số lớn với chi phí về tốc độ.

Cách khai báo: | sc_bigint value_name; | sc_biguint value_name;

| // số có dấu | sc_int<5> value=3; // 5 bit | // biển diễn số không dấu | sc_uint<23> value(4000); // 23 bit | sc_biguint<90> value; // 90 bit

# SystemC Home